﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AGPFP1
{
    static class Program
    {
        /// <summary>
        /// Punto de entrada principal para la aplicación.
        /// </summary>
        [STAThread]
        static void Main()
        {
            //Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new Form1());

            //PPPPPPHPHHPPPPPHHHPHHHHHPHHPPPPHHPPHHPHHHHHPHHHHHHHHHHPHHPHHHHHHHPPPPPPPPPPPHHHHHHHPPHPHHHPPPPPPHPHH
            //HHPPPPPHHPPPHPPPHP
            AGPFP ag = new AGPFP("HHPPPPPHHPPPHPPPHP", 100);
            ag.generarPoblacionInicial2D();

           // Console.WriteLine("Generar Poblacion: " + ag.mediaPoblacion2D());
            int cochinilla = 0;

            for (int a = 0; a < 100; a++)
            {
                ag = new AGPFP("HHPPPPPHHPPPHPPPHP", 100);
                ag.generarPoblacionInicial2D();

                for (int i = 0; i < 100; i++)
                {
                    
                    ag.seleccion();
                    //Console.WriteLine("Despues de la seleccion: " + ag.mediaPoblacion2D());

                    ag.cruzamiento();
                    //Console.WriteLine("Despues del cruzamiento: " + ag.mediaPoblacion2D());

                    
                    //ag.pueblo[0] = ag.mejorSolucion();
                }


                


               // Console.WriteLine("Despues del show: " + ag.mediaPoblacion2D());

                //foreach (List<int[]> i in ag.pueblo)
                //{
                //    Console.WriteLine(ag.evaluarCamino2D(i).ToString());
                //}
                int m = ag.evaluarCamino2D(ag.mejorSolucion());
                Console.WriteLine(m);

                if (m < cochinilla)
                {
                    cochinilla = m;
                }

            }
            

            Console.WriteLine("EL MEJOR DE LO MEJOR CON HONORES: " + cochinilla);
            


            //foreach (List<int[]> i in ag.pueblo)
            //{
            //    ag.dibujar(i, ag.texto, ag.evaluarCamino2D(i).ToString());
            //}

        }
    }
}
